while 循环常常用来写死循环的脚本,用于监控某项服务。
加入内容:
1 2 3 4 5 6 7
| #!/bin/bash a=5 while [ $a -ge 1 ] do echo $a a=$[$a-1] done
|
while 循环格式也很简单:
1 2 3
| while 条件:do command done
|
上例脚本的执行结果为:
另外可以把循环条件拿一个冒号代替,这样可以做到死循环,监控脚本常常这样写:
1 2 3 4
| while :;do command sleep 3 done
|
下面用 while 死循环,来写一个判断系统负载的脚本。
加入内容:
1 2 3 4 5 6 7 8 9
| #!/bin/bash while :;do load=`uptime |awk '{print $(NF-2)}'|cut -d. -f1` if [ $load -gt 10 ] then echo "system load is high."|mail -s "system load" 89429541@qq.com fi sleep 10 done
|
说明:uptime 命令是用来查看系统负载的,用 awk 截取倒数第三段,也即是平均 1 分钟的系统负载,然后只取整数部分。如果系统负载高于 10 则发邮件告警。每隔 10 秒检查一次。但是如果系统负载一直高于 10,那么将会出现每隔 10 秒发一次邮件的窘境。